require(['zTreeCheckbox', 'grid', 'validator'], function () {
    //--------------------------------------------------------------------------------------------------变量声明
    //TODO
	var userInfo = commonFun.execParentMethod("getUserInfo"); 									//当前登陆用户信息
    var isAdminRole = userInfo.isAdminRole,														//是否超级管理员
    	allow_mobile_login = userInfo.allowMobileLogin,											//是否允许手机登陆
    	current_user_id = userInfo.id,															//当前用户id
    organId = "",																				//机构id
    editDialog,																					//编辑弹出层
    setting,																					//用户树设置
    saveUrl = "/sysUser/saveSysUserRole.htm",													//保存url
    updateUrl = "/sysUser/updateSysUser.htm",													//编辑url
    loadUserRoleUrl = "/sysUser/getSysUserTreeByOrgan.htm",										//加载用户组织树url
    url = saveUrl,																				//表单用url，默认是保存功能
    form = $("#userForm"),																		//用户表单
    $userRole = $("#userRole"),																	//用户角色列表
    $roleList = $('#roleList'),																	//角色列表
    $leftTree = $('#leftTree');																	//左侧用户信息树
    //$code = $("#code");
    //-------------------------------------------------------------------------------------------------函数声明
    //TODO
    /**
     * 初始化
     */
    function initElements(){
    	//左侧树设置
    	setting = {
    			view : {
    				showIcon : true,
    				selectedMulti : false//,
    			},
    			data : {
    				key : {
    					name : "name"
    				},
    				simpleData : {
    					enable : true,
    					idKey : "id",
    					pIdKey : "pId",
    					rootPId : 0
    				}
    			},
    			callback : {
    				// 单击树节点以进行用户编辑
    				onClick : userTreeOnClick
    			}
    	};
    	//初始化表单
    	form.initForm();
    	// 设置默认启用
        $("#isClosed0").attr('checked', true);
        // 加载权限按钮(暂时屏蔽，无按钮权限)
        //TODO
        //初始化角色对应用户表格
        initRoleListGrid();
        //窗口高度
        $(window).on('resize', function () {
            setHeight();
        });
        loadLeftTree();
        setHeight();
    }
    
//    $("#code").click(function(){
//    	console.info("111");
////    	$(this).focus();
//    	$("#code").val("").focus();
//    });
    
    // function setNodeIcon(dataArr) {
	// 	$.each(dataArr, function (index, item) {
	// 		item.icon = $.getProjectName() + '/content/images/org-tree-icon.png';
	// 	});
	// 	return dataArr;
	// }
    
    // function setFontCss(treeId, treeNode) {
	// 	//主要用于搜索时，匹配到的节点要高亮显示
	// 	if(hasSetTreeFontStyle){
	// 		return (!!treeNode.highlight) ? {color: "#A60000", "font-weight": "bold"} : {color: "#333", "font-weight": "normal"};
	// 	}
	// 	if (treeNode.type == '2') {
	// 		return 'driver-icon';
	// 	} else {
	// 		return 'org-icon';
	// 	}
	// }
    
    /**
     * 初始化角色对应用户表格
     */
    function initRoleListGrid(){
        $roleList.grid({
            url: "/sysUser/getPageRoleListByUserRoleVo.htm",
            width: 680,
            height: 120,
            colModel: [
                {name: "id", index: "id", key: true, label: "id", hidden: true},
                {name: "name", index: "name", label: "角色名称", sorttype: "text", align: "center", width: 317},
                {name: "remark", index: "remark", label: "备注", sorttype: "text", align: "center", width: 317}
            ]
        });
    }
    
    /**
     * 设置左侧树高度和右侧部分高度
     */
    function setHeight() {
        var height = $(window).height();
        $leftTree.parent().height(height - 45);
        $leftTree.height(height - 55);
        $('#right').height(height);
    }

    /**
     * 左侧用户树节点点击
     */
    function userTreeOnClick(event, treeId, treeNode) {
    	if (treeNode.type == 2) {
    		$userRole.show();
    		url = updateUrl;//设置编辑功能url
    		fillfn(treeNode);
    	} else {
    		addFun();
    	}
    }
    
    /**
     * 重新加载左侧用户
     */
    function loadLeftTree(nodeId) {
        hasSetTreeFontStyle = false;
        $.ajaxExt({
            url: loadUserRoleUrl
        }).done(function(result){
            if (!result) {
                result = [];
            }
//            $.fn.zTree.init($leftTree, setting, result);
//            
//            var treeObj = $.fn.zTree.getZTreeObj('leftTree');
            
            var treeObj = $leftTree.createTree(setting, result, {search: $('#searchlabel')});
            
            if (!result.length) {
                $leftTree.append('无数据，请联系管理员！');
            } else {
                if (typeof nodeId !== "undefined") {//选中对应节点
                    treeObj.setting.view.expandSpeed = "";
                    treeObj.expandAll(true);
                    treeObj.setting.view.expandSpeed = "fast";
                    var node = treeObj.getNodesByFilter(function (node) {
                        return node.id == nodeId;
                    }, true);
                    treeObj.selectNode(node, false);
                    userTreeOnClick(null, node.id, node);
                } else {//选中第一个节点
                    treeObj.expandAll(true);
                    var node = treeObj.getNodesByFilter(function (node) {
                        return node.type == '2';
                    }, true);
                    treeObj.selectNode(node, false);
                    userTreeOnClick(null, node.id, node);
                }
            }
            hasSetTreeFontStyle = true;
        });
    }
    
    /**
     * 用户列表添加
     */
    function addFun() {
        // upt by jeffxu
        var treeObj = $.fn.zTree.getZTreeObj('leftTree');
        var nodes = treeObj.getSelectedNodes();
        if (nodes.length > 0) {
            var treeNode = nodes[0];
            if (treeNode.type == '1') {
                $userRole.hide();
                $("#id").val("");
                $("#isClosed0").attr('checked', true);
                $("#userType0").attr('checked', true);
                // 是否允许用户在手机端登录
                if (isAdminRole === "1" || allow_mobile_login === "1") {
                    $("#allowMobileLogin0").attr('checked', true);// 允许
                } else {
                    $("#allowMobileLogin1").attr('checked', true);// 不允许
                }
                $("#acctName").removeAttr("readonly", "readonly");
                form.reset();
                //设置为添加功能的url
                url = saveUrl;
                $("#corpId").val(treeNode.corpId);
                $("#organId").val(treeNode.organId);
                $("#organName").val(treeNode.organName);
            } else {
                $.messager.alert("提示", "请先选择左侧树的组织机构,再进行新增", "info");
            }
        } else {
            $.messager.alert("提示", "请先选择左侧树的组织机构,再进行新增", "info");
        }
    }

    /**
     * 显示用户对应配置的角色列表
     */
    function showUserByRole(id, corpId) {
        $roleList.grid('setGridParam', {
        	page: 1,
            datatype: "json",
            postData: {
            	userId: id,
            	corpId: corpId
            }
        }).trigger("reloadGrid");
    }

    /**
     * 点击左侧列表中某个角色填充表单
     */
    function fillfn(item) {
        url = updateUrl;
        organId = item.organId;
        $("#acctName").attr("readonly", "readonly");
        if (item.id == current_user_id) {
            $("#userDel").hide();
            $userRole.hide();
        } else {
            $("#userDel").show();
            $userRole.show();
        }
        $('#userForm').setValues(item);
        //读取用户对应角色信息
        showUserByRole(item.id, item.corpId);
    }
    
    /**
     * 获取对话框
     */
    function getDialog(option) {
        option = option || {};
        if (editDialog) {
            editDialog.dialog('open');
            if (option.title) {
                editDialog.dialog('setOption', 'title', option.title);
            }
            return editDialog;
        } else {
            editDialog = $('<div>').dialog({
                title: option.title || '用户角色配置',
                url: './system/sysUserSetEdit.htm',
                height: 450,
                width: 530,
                autoOpen: true,
                buttons: [
                    {
                        text: '保存',
                        css: 'btn btn-save btn-medium',
                        click: function () {
                            $(this).dialog('exec', 'saveUserRole', $("#id").val(), $("#corpId").val(), $roleList);
                            $(this).dialog('close');
                        }
                    },
                    {
                        text: '关闭',
                        css: 'btn btn-cancel btn-medium',
                        click: function () {
                            $(this).dialog('close');
                        }
                    }
                ]
            })
        }
    }
    //-----------------------------------------------------------------------------------------------事件
    //TODO
    //文本点击焦点置文本内容后
//    $("input").click(function () {
//        var t = $(this).val();
//        $(this).val("").focus().val(t);
//    });
    //更新、添加用户
    $("#save").click(function () {
        //表单校验
    	if ($.validator('#userForm')) {
	        var id = $("#id").val();
	        var params = form.getValues();
	        var loadMask = $.createMask();
	        $.ajaxExt({
	            url: url,
	            data: params
	        }).done(function (result) {
	            loadLeftTree(result.id);//重新载入数据
	            url = updateUrl;//设置编辑功能url
	            $userRole.show();
	            showUserByRole(result.id, result.corpId);
	            $("#id").val(result.id);
	            if (id == "") {//添加
	            	$.messager.alert("提示", "新增成功!", "info");
	            } else {//编辑
	                var neworganId = $("#organId").val();
	                if (organId != neworganId) {
	                	$.messager.alert("提示", "保存成功，您修改了所属机构，需要为用户重新分配角色！", "warn");
	                } else {
	                	$.messager.alert("提示", "保存成功!", "info");
	                }
	            }
	        });
	        loadMask.remove();
        }
    });
    
    //删除用户
    $("#userDel").click(function () {
        if ($("#id").val() == "") {
            $.messager.alert("提示", "请选择一个用户");
        } else {
            var treeObj = $.fn.zTree.getZTreeObj('leftTree');
            var treeNode = treeObj.getSelectedNodes()[0];
            $.messager.confirm("是否删除", "是否删除选中的记录？", function (r) {
            	var loadMask = $.createMask();
                if (r) {
                    var id = '' + $("#id").val();
                    $.ajaxExt({
                        url: "/sysUser/sysUserDelete.htm",
                        data: {
                        	"id": id
                        }
                    }).done(function () {
                        $.messager.alert("提示", "删除成功!", "info");
                        if (treeNode.getParentNode() !== null) {
                            loadLeftTree(treeNode.organId);
                        } else {
                            loadLeftTree();
                        }
                        loadMask.remove();
                    });
                }else{
                	loadMask.remove();
                }
            });
        }
    });
    
    //删除角色对应用户
    $("#deleteUser").click(function () {
        var roleIds = $("#roleList").grid('getGridParam', 'selarrrow');
        if (roleIds == "") {
            $.messager.alert("提示", "请至少选择一个角色");
        } else {
            $.messager.confirm("是否删除", "是否删除选中的记录？", function (r) {
                if (r) {
                    var id = $("#id").val();
                    var corpId = $("#corpId").val();
                    if (id) {
                        $.ajaxExt({
                            url: "/sysUser/deleteUserRole.htm",
                            data: {
                            	"roleIds":roleIds, 
                            	"id":id
                            }
                        }).done(function () {
                            $.messager.alert("提示", "删除成功!", "info");
                            showUserByRole(id, corpId);
                        });
                    }
                }
            });
        }
    });
    
    //新建
    $('#addNew').on('click', function () {
        addFun();
    });
    
    //弹出层控制
    $("#addRole").click(function () {
        getDialog({title: '角色配置'});
        var id = $("#id").val();
        var corpId = $("#corpId").val();
        getDialog().dialog('exec', 'showUnkownUserByRole', id, '', corpId);
    });

    //重置密码
    $("#commonResetPass").click(function () {
        $.messager.confirm("是否重置", "是否重置用户密码？", function (r) {
            if (r) {
                $.ajaxExt({
                    url: "/sysUser/commonResetPass.htm",
                    data: form.getValues()
                }).done(function () {
                    $.messager.alert("提示", "重置的密码为123456");
                });
            }
        });
    });
    
//    //校验编号
//    $code.focusout(function(){
//    	if(){
//    		var content = $(this).val();
//    		console.info(content);
//    		if(content){
//    			$.ajaxExt({
//    				url: "/sysUser/verifyUserCode.htm",
//    				data:{"code":content}
//    			}).done(function(data){
//    				if(data > 0){
//    					$("#saveDisable").hide();
//    					$("#save").show();
//    				}else{
//    					$("#save").hide();
//    					$("#saveDisable").show();
//    				}
//    			});
//    		}
//    	}
//    });
    
    
    initElements();
});
